package com.dituhui.tool.elastic;

import java.util.Map;

/**
 * ES参数
 * 
 * @author liweigu
 *
 */
public class ElasticParameter {
	/**
	 * 查询过滤条件，key为数据属性名，value为值集
	 */
	private Map<String, Object> term;
	/**
	 * 返回字段
	 */
	private String[] returnFields;
	/**
	 * 排序字段
	 */
	private String[] orderFields;
	/**
	 * 排序顺序
	 */
	private String sortOrder;
	/**
	 * 查询索引，必须有值
	 */
	private String index;
	/**
	 * 查询type
	 */
	private String type;
	/**
	 * 查询结果数定义，默认值是null，代表返回10个记录。
	 */
	private String size;
	/**
	 * 执行检索的类别 ，可选值集为 0、1、2、3、4、5，默认为 1.
	 */
	private String searchtype;

	/**
	 * 获取执行检索的类别
	 * 
	 * @return 执行检索的类别
	 */
	public String getSearchtype() {
		return searchtype;
	}

	/**
	 * 设置 执行检索的类别 ，可选值集为 0、1、2、3、4、5.不设置的话，默认为1<br />
	 * 0 - DFS_QUERY_THEN_FETCH <br />
	 * 查询是针对所有的块执行的，但返回的是足够的信息，而不是文档内容（Document）。<br />
	 * 这对于有许多块的index来说是很便利的（返回结果不会有重复的，因为块被分组了）;<br />
	 * 1 - QUERY_THEN_FETCH <br/>
	 * 最原始（也可能是最快的）实现就是简单的在所有相关的shard上执行检索并返回结果。<br />
	 * 2 - DFS_QUERY_AND_FETCH <br />
	 * 与QUERY_THEN_FETCH相同，预期一个初始的散射相伴用来为更准确的score计算分配了的term频率。<br />
	 * 3 - QUERY_AND_FETCH <br />
	 * 与QUERY_AND_FETCH相同，预期一个初始的散射相伴用来为更准确的score计算分配了的term频率。<br />
	 * 4 - SCAN <br />
	 * 在执行了没有进行任何排序的检索时执行浏览。此时将会自动的开始滚动结果集。<br />
	 * 5 - COUNT <br />
	 * 只计算结果的数量，也会执行facet。
	 * 
	 * @param searchtype 执行检索的类别
	 */
	public void setSearchtype(String searchtype) {
		this.searchtype = searchtype;
	}

	/**
	 * 获取查询条件
	 * 
	 * @return 查询条件
	 */
	public Map<String, Object> getTerm() {
		return term;
	}

	/**
	 * 设置查询条件
	 * 
	 * @param term 查询条件
	 */
	public void setTerm(Map<String, Object> term) {
		this.term = term;
	}

	/**
	 * 获取返回字段
	 * 
	 * @return 返回字段
	 */
	public String[] getReturnFields() {
		return returnFields;
	}

	/**
	 * 设置返回字段
	 * 
	 * @param returnFields 返回字段
	 */
	public void setReturnFields(String[] returnFields) {
		this.returnFields = returnFields;
	}

	/**
	 * 获取排序字段
	 * 
	 * @return 排序字段
	 */
	public String[] getOrderFields() {
		return orderFields;
	}

	/**
	 * 设置排序字段
	 * 
	 * @param orderFields 排序字段
	 */
	public void setOrderFields(String[] orderFields) {
		this.orderFields = orderFields;
	}

	/**
	 * 获取排序顺序
	 * 
	 * @return 排序顺序
	 */
	public String getSortOrder() {
		return sortOrder;
	}

	/**
	 * 设置排序顺序
	 * 
	 * @param sortOrder 排序顺序
	 */
	public void setSortOrder(String sortOrder) {
		this.sortOrder = sortOrder;
	}

	/**
	 * 获取查询索引
	 * 
	 * @return 查询索引
	 */
	public String getIndex() {
		return index;
	}

	/**
	 * 设置查询索引，多个索引之间使用逗号隔开，如："index1,index2,index3"
	 * 
	 * @param index 查询索引
	 */
	public void setIndex(String index) {
		this.index = index;
	}

	/**
	 * 获取type属性内容
	 * 
	 * @return type属性内容
	 */
	public String getType() {
		return type;
	}

	/***
	 * 设置查询的type属性内容
	 * 
	 * @param type type属性内容
	 */
	public void setType(String type) {
		this.type = type;
	}

	/**
	 * 获取查询结果集大小
	 * 
	 * @return 查询结果集大小
	 */
	public String getSize() {
		return size;
	}

	/***
	 * 设置查询结果集大小
	 * 
	 * @param size 查询结果集大小
	 */
	public void setSize(String size) {
		this.size = size;
	}

}
